<?php
/**
 * 会员控制器
 */
namespace app\index\controller;
use app\index\controller\Common;
class Member extends Common{

	/**
     * 会员登录页面展示
     */
    public function loginShow(){

    	//设置页面信息
    	$this->setPageMsg( '用户登录', '用户登录关键字', $desc = '用户登录描述', ['login','bottomnav'], ['jquery.validate.min'] );

        //展示视图
		return $this->fetch('login');
    }

    /**
     * 会员登录
     */
    public function login(){
    	
    	// 验证信息
    	$validate = new \app\index\validate\Member();
    	if( !$validate->scene('login')->check( input('post.')) ){

    		$this->error( $validate->getError() );

    	}

    	// 收集信息
    	$username = input('post.email');
    	$password = input('post.password','','md5');
    	$field = 'mid,nickname,email,password,is_clock,is_validate,jyz';

    	//查询会员是否存在
    	if( $user = db('member')->field( $field )->where('email','=',$username)->find() ){

    		// 判断密码是否正确
    		if( $user['password'] ==  $password ){

    			// 判断是否进行了邮箱验证
    			if( !$user['is_validate'] ){

    				// 判断是否被锁定
    				if( !$user['is_clock'] ){

                        // 判断会员等级
                        foreach ( config('member.level') as $k => $v) {
                            
                            if( $user['jyz'] >= $v[0] && $user['jyz'] <= $v[1] ){

                                $level = $k;
                                break;
                            }

                        }
                        
    					// 存储会员信息到session中
                        session('mid',$user['mid']);
    					session('level',$level);
    					session('nickname',$user['nickname'] ? $user['nickname'] : $user['email'] );
                      
                        // 将cookie中的购物车信息添加到数据库中
                        if( cookie('cart') ) {

                            $cartControl = new \app\index\controller\Cart();
                            $cartControl->cookieToDatabase();

                        }

                        // 登陆后跳转回原页面
                        if( session('returnUrl') ){

                            $url = session('returnUrl');
                            session('returnUrl',null);

                        }else {

                            $url = url('index/index');
                        }

                        // 跳转
                        // q($url);
    					$this->success('登录成功，即将跳转！',$url);

    				}else{

		    			$this->error('你的账户已经被锁定');

		    		}

    			}else{

	    			$this->error('请先去邮箱进行验证，再来登录！');

	    		}

    		}else{

    			$this->error('密码错误！');

    		}
    	}else{

    		$this->error('用户不存在！');

    	}
    	
    }

    /**
     * 会员退出登录
     */
    public function logout(){

        // 删除session内容
        session('mid',null);
        session('nickname',null);
        session('level',null);
        
        // 跳转回原网页
        $this->redirect( $_SERVER['HTTP_REFERER'] );
    }


	/**
     * 会员注册页面展示
     */
    public function registShow(){
    	
    	//设置页面信息
    	$this->setPageMsg( '用户注册', '用户注册关键字', $desc = '用户注册描述', ['login','bottomnav'], ['jquery.validate.min'] );

        //展示视图
		return $this->fetch('regist');
    }

    /**
     * 会员注册
     */
    public function regist(){
    	
    	//验证信息
    	$validate = new \app\index\validate\Member();
    	if( !$validate->check( input('post.')) ){

    		$this->error( $validate->getError() );

    	}

    	//收集信息
    	$data['email'] = input('post.email');
    	$data['password'] = input('post.password','','md5');
    	$data['create_time'] = time();
    	$data['login_time'] = time();
    	$data['login_ip'] = ip2long( request()->ip() );
    	$data['is_validate'] = md5( config('md5_keygen').time().mt_rand() );

    	//添加会员
    	$memModel = new \app\index\model\Member();
    	if( $memModel->allowField( true )->save( $data ) ){

    		$this->success('注册成功，请进行邮箱验证后，重新登录！','loginShow');

    	}else{

    		$this->error('注册失败！');

    	}
    	
    }

    /**
     * 会员邮箱验证
     */
    public function emaiCheck(){

    	//收集信息
    	$mid = input('id')+0;
    	$code = input('code');

    	//查找会员是否存在
    	$db = db('member');
    	if( $db->where( ['mid'=>$mid,'is_validate'=>$code] )->count() ){
    		
    		if( $db->strict(true)->update( ['mid'=>$mid,'is_validate'=>''] ) ){

    			$this->success('验证成功，请跳转后登录！','loginShow');

    		}else{
    		
	    		$this->error('邮箱验证失败！');

	    	}

    	}else{
    		
    		$this->error('注册失败！');

    	}
    	
    }

    /**
     * 会员中心--我的订单
     */
    public function order(){

        //设置页面信息
        $this->setPageMsg( '用户注册', '用户注册关键字', '用户注册描述', ['base2','public','profile'], ['profile'] );

    
        // 获取订单信息
        $orders = db('order')->where('mid',session('mid'))->select();
        
        // 获取订单的配置信息
        $status = config('order');

        // 循环修改状态和获取按钮信息
        foreach ($orders as $k => $v) {

            // 订单状态
            foreach ($status["order_status"] as $k1 => $v1) {

                if( $v["order_status"] == $k1 ){

                    $orders[$k]["order_status"] = $v1[0];

                    $orders[$k]["order_btn"]["id"] = $v1[1]['id'];
                    $orders[$k]["order_btn"]["info"] = $v1[1]['info'];
                    $orders[$k]["order_btn"]["on"] = $v1['on'];
                }
                
            }

            // 物流状态
            foreach ($status["ship_status"] as $k1 => $v1) {

                if( $v["ship_status"] == $k1 ){

                    $orders[$k]["ship_status"] = $v1[0];
                    $orders[$k]["ship_btn"]["id"] = $v1[1]['id'];
                    $orders[$k]["ship_btn"]["info"] = $v1[1]['info'];
                    $orders[$k]["ship_btn"]["on"] = $v1['on'];
                
                }
                
            }

            // 支付状态
            foreach ($status["pay_status"] as $k1 => $v1) {

                if( $v["pay_status"] == $k1 ){

                    $orders[$k]["pay_status"] = $v1[0];
                    $orders[$k]["pay_btn"]["id"] = $v1[1]['id'];
                    $orders[$k]["pay_btn"]["info"] = $v1[1]['info'];

                }
                
            }
            
        }
        // q($orders);
        //分配变量
        $this->assign('orders',$orders);

        //展示视图
        return $this->fetch();

    }

    /**
     * 会员中心--账户信息
     */
    public function account(){

        //设置页面信息
        $this->setPageMsg( '用户注册', '用户注册关键字', '用户注册描述', ['base2','public','profile'], ['profile'] );

        //展示视图
        return $this->fetch();
    }

    /**
     * 会员中心--地址信息
     */
    public function address(){

        //设置页面信息
        $this->setPageMsg( '用户注册', '用户注册关键字', '用户注册描述', ['base2','public','profile','jquery-ui'], ['jquery-1.7.2.min','profile','jquery-ui-1.8.22.dialog.min'] );

        // 获取收货人信息
        $address = db('address')->where('mid','=',session('mid'))->select();
        
        // 获取一级城市
        $citys = db('city')->field('cid,city_name')->where(['pid'=>0,'status'=>1])->select();

        //分配变量
        $this->assign('address',$address);
        $this->assign('citys',$citys);

        //展示视图
        return $this->fetch();
    }

  
}
